ورود

View Full Version : کار کردن با آرایه در کتابخانه OpenCV



r.khodabakhshi
یک شنبه 21 تیر 1394, 19:12 عصر
سلام. من میخام توی کتابخانه OpenCV بیام و قسمتی از یک آرایه رو جدا کنم!
مثلا با این دستور میشه یه آرایه 3 در 5 تعریف کرد:

Mat arr = (Mat_<int>(3,5) << 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 5, 4, 3, 2, 1);
که به این صورت میشه:
[1 2 3 4 5
6 7 8 9 0
5 4 3 2 1]
حالا دستوری میخام که بیاد و از سطر اول و دوم مقادیر ستون سوم و چهارم رو داخل یه آرایه دیگه ذخیره کنه! که واسه مثال بالا میشه:
[3 4 8 9]
بصورت کلی رنج اولیه(یه مقدار، نه!) بگیره واسه سطر و یه رنج ثانویه بگیره واسه ستون، جدا کنه و در یه آرایه تک بعدی ذخیره کنه!

ممنون.

rahnema1
یک شنبه 21 تیر 1394, 21:54 عصر
سلام
این را امتحان کنید
Mat arr2 = Mat_(arr,Range(0,2), Range(2,4)).reshape(0, 1);

r.khodabakhshi
یک شنبه 21 تیر 1394, 23:39 عصر
ممنون. حالا اگه با کد متلب آشنایی داشته باشید، یک تصویر خاکستری رو میخام توی هر سه وجه یه آرایه بریزم باید چیکار کنم:
کد متلب به این صورت میشه:
arr_im(:, : , 1) = grayImgCopy;
arr_im(:, : , 2) = grayImgCopy;
arr_im(:, : , 3) = grayImgCopy;

rahnema1
دوشنبه 22 تیر 1394, 00:00 صبح
میشه از split و merge استفاده کرد:
http://stackoverflow.com/questions/6699374/access-to-each-separate-channel-in-opencv
این شکلی هم می شه:

for(int i = 0; i < arr_im.rows; i++)
for(int j = 0; j < arr_im.cols; j++)
for(int color = 0; color < 3; color++)
arr_im(i, j)[color] = grayImgCopy(i, j);