چرا تصاویر یکسان هستند - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

چرا تصاویر یکسان هستند

0 امتیاز
من در ابتدا تصویر image1 را imread کردم بعد این تصویر را ریختم توی تصویر image2 حالا تصویر image1 را با رنگ سیاه پر کردم تصویر image2 هم مشکی میشه
اشکال از کجا می تونه باشه.
Mat image1=imread("d:\\new folder\\sample.bmp,0");
Mat image2 =image1;
image1.setTo(0);
imShow("image1",image1);
imShow("image2",image2);
waitKey();

 

 

سوال شده آذر 26, 1392  بوسیله ی hamze (امتیاز 33)   1 5 8
دوباره تگ گذاری شد بهمن 22, 1392 بوسیله ی BlueBlade

2 پاسخ

+1 امتیاز
 
بهترین پاسخ

وقتی اینو می نویسین خوب هر دو به یه جا اشاره می کنن. پس وقتی یکی عوض بشه اونم عوض میشه

Mat image2 =image1;

میتونی کپی کنی مثلا

Mat img1 = img.clone();

این یه کپی میسازه از img و تو img1 میریزه

میتونی از تابغ copyTo هم استفاده کنی

پاسخ داده شده آذر 26, 1392 بوسیله ی mahdi (امتیاز 392)   7
انتخاب شد آذر 28, 1392 بوسیله ی BlueBlade
+2 امتیاز
وقتی شما عمل انتساب یا copy constructor کلاس Mat را استفاده می کنید داد ه های تصویر کپی نمیشه و فقط برای تصویر دوم header ساخته میشه و داده های یکسان هستند شما وقتی داده های تصویر
اول را پاک می کنید در واقع چون داده های این دو Mat یکسان هستند عملا داده های تصویر دوم هم پاک شده برای اینکار باید از تصویر اول را clone کرده و در تصویر
دوم بریزید . کد خودتون را به صورت زیر تغییر دهید.
image2 = image1.clone();

 

 
یا 
image1.copyTo(image2);

 

 

پاسخ داده شده آذر 26, 1392 بوسیله ی مصطفی ساتکی (امتیاز 21,998)   24 34 75
...